home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGMISC / MODULTUB.LZH / ENTYPES.MOD < prev    next >
Text File  |  1989-01-18  |  3KB  |  82 lines

  1.                                         (* Chapter 10 - Program 1 *)
  2. MODULE Entypes;
  3.  
  4. FROM InOut IMPORT WriteString, WriteLn;
  5. FROM RealInOut IMPORT WriteReal;
  6.  
  7. TYPE Days = (mon,tue,wed,thu,fri,sat,sun);
  8.      TimeOfDay = (morning,afternoon,evening,night);
  9.  
  10. VAR Day             : Days;
  11.     Time            : TimeOfDay;
  12.     RegularRate     : REAL;
  13.     EveningPremium  : REAL;
  14.     NightPremium    : REAL;
  15.     WeekendPremium  : REAL;
  16.     TotalPay        : REAL;
  17.  
  18. BEGIN    (* Main program *)
  19.    WriteString('                         Pay rate table');
  20.    WriteLn;
  21.    WriteLn;
  22.    WriteString('  DAY       Morning    Afternoon');
  23.    WriteString('    Evening      Night');
  24.    WriteLn;
  25.  
  26.    RegularRate := 12.00;      (* This is the normal pay rate *)
  27.    EveningPremium := 1.10;    (* 10 percent extra for working late *)
  28.    NightPremium := 1.33;      (* 33 percent extra for graveyard *)
  29.    WeekendPremium := 1.25;    (* 25 percent extra for weekends *)
  30.  
  31.    FOR Day := mon TO sun DO
  32.  
  33.       CASE Day OF
  34.         mon : WriteString('Monday   '); |
  35.         tue : WriteString('Tuesday  '); |
  36.         wed : WriteString('Wednesday'); |
  37.         thu : WriteString('Thursday '); |
  38.         fri : WriteString('Friday   '); |
  39.         sat : WriteString('Saturday '); |
  40.         sun : WriteString('Sunday   ');
  41.       END;    (* of CASE statment *)
  42.  
  43.       FOR Time := morning TO night DO
  44.          CASE Time OF
  45.            morning   : TotalPay := RegularRate; |
  46.            afternoon : TotalPay := RegularRate; |
  47.            evening   : TotalPay := RegularRate * EveningPremium; |
  48.            night     : TotalPay := RegularRate * NightPremium;
  49.          END;  (* of CASE statement *)
  50.  
  51.          CASE Day OF
  52.            sat : TotalPay := TotalPay * WeekendPremium; |
  53.            sun : TotalPay := TotalPay * WeekendPremium;
  54.          ELSE (* Do nothing *)
  55.          END;  (* of CASE statement *)
  56.  
  57.          WriteReal(TotalPay,12);
  58.       END;  (* of Time loop *)
  59.       WriteLn;
  60.    END;  (* of FOR loop *)
  61.  
  62. END Entypes.
  63.  
  64.  
  65.  
  66.  
  67. (* Result of execution
  68.  
  69.                          Pay rate table
  70.  
  71.   DAY       Morning    Afternoon    Evening      Night
  72. Monday    1.2000E+001 1.2000E+001 1.3200E+001 1.5960E+001
  73. Tuesday   1.2000E+001 1.2000E+001 1.3200E+001 1.5960E+001
  74. Wednesday 1.2000E+001 1.2000E+001 1.3200E+001 1.5960E+001
  75. Thursday  1.2000E+001 1.2000E+001 1.3200E+001 1.5960E+001
  76. Friday    1.2000E+001 1.2000E+001 1.3200E+001 1.5960E+001
  77. Saturday  1.5000E+001 1.5000E+001 1.6500E+001 1.9950E+001
  78. Sunday    1.5000E+001 1.5000E+001 1.6500E+001 1.9950E+001
  79.  
  80. *)
  81.  
  82.